﻿using System;
using System.Data;
using System.Windows.Forms;

namespace Gestión_UTN.View.general
{
    public partial class Profesores : Form
    {
        private static Gestión_UTN.bl.profesorbl createProfesor = Gestión_UTN.factories.blfactory.createProfesor();

        private static int dni;

        public Profesores()
        {
            InitializeComponent();
        }

        private void ListadoProfesores_Load(object sender, EventArgs e)
        {
            DataTable profesores = createProfesor.FindAllProfesores();

            if (null != profesores)
            {
                string[] filtros = { "DNI", "Nombre", "Apellido" };

                this.tscmbFiltro.Items.AddRange(filtros);

                this.tscmbFiltro.Text = "Filtrar por...";

                this.bsource.DataSource = profesores;
                this.navegador.BindingSource = this.bsource;
                this.dgvProfesores.DataSource = this.bsource;

                this.dgvProfesores.Columns[0].HeaderText = "DNI";
                this.dgvProfesores.Columns[1].HeaderText = "Nombre";
                this.dgvProfesores.Columns[2].HeaderText = "Apellido";
                this.dgvProfesores.Columns[3].HeaderText = "Fecha de Nacimiento";
                this.dgvProfesores.Columns[4].HeaderText = "Dirección";
                this.dgvProfesores.Columns[5].HeaderText = "Ciudad";
                this.dgvProfesores.Columns[6].HeaderText = "Teléfono Principal";
                this.dgvProfesores.Columns[7].HeaderText = "Teléfono Auxiliar";
                this.dgvProfesores.Columns[8].HeaderText = "Correo Principal";
                this.dgvProfesores.Columns[9].HeaderText = "Correo Auxiliar";
            }
            else
            {
                MessageBox.Show("Error al Cargar!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

                this.Close();

                this.Dispose();
            }
        }

        private void btnExportar_Click(object sender, EventArgs e)
        {
            try
            {
                Gestión_UTN.util.Herramientas.exportarAExcel(dgvProfesores, "Profesores");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error al Intentar Exportar!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

                Gestión_UTN.util.EscribirLog.escribirArchivo(ex.Message);
            }

        }

        private void refreshData()
        {
            DataTable profesores = createProfesor.FindAllProfesores();

            if (null != profesores)
            {
                this.bsource.DataSource = profesores;
                this.navegador.BindingSource = this.bsource;
                this.dgvProfesores.DataSource = this.bsource;

                this.dgvProfesores.Columns[0].HeaderText = "DNI";
                this.dgvProfesores.Columns[1].HeaderText = "Nombre";
                this.dgvProfesores.Columns[2].HeaderText = "Apellido";
                this.dgvProfesores.Columns[3].HeaderText = "Fecha de Nacimiento";
                this.dgvProfesores.Columns[4].HeaderText = "Dirección";
                this.dgvProfesores.Columns[5].HeaderText = "Ciudad";
                this.dgvProfesores.Columns[6].HeaderText = "Teléfono Principal";
                this.dgvProfesores.Columns[7].HeaderText = "Teléfono Auxiliar";
                this.dgvProfesores.Columns[8].HeaderText = "Correo Principal";
                this.dgvProfesores.Columns[9].HeaderText = "Correo Auxiliar";
            }
            else
            {
                MessageBox.Show("Error al Cargar!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

                this.Close();

                this.Dispose();
            }
        }

        private void bindingNavigatorAddNewItem_Click(object sender, EventArgs e)
        {
            View.alta.AltaProfesor alta = new alta.AltaProfesor();

            alta.FormClosed += new FormClosedEventHandler(alta_FormClosed);
            alta.ShowDialog();
        }

        void alta_FormClosed(object sender, FormClosedEventArgs e)
        {
            refreshData();
        }

        private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)
        {
            try
            {
                DialogResult resp = MessageBox.Show("¿Desea Eliminar el Profesor?", "Eliminar Profesor", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

                if (resp == System.Windows.Forms.DialogResult.Yes)
                {
                    if (this.dgvProfesores.CurrentRow != null)
                    {
                        bool eliminado = createProfesor.DeleteProfesor(Convert.ToInt32(this.dgvProfesores.CurrentRow.Cells[0].Value.ToString()));

                        if (eliminado)
                        {
                            MessageBox.Show("Profesor Eliminado!", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            refreshData();
                        }
                        else
                        {
                            MessageBox.Show("Error al Intentar Eliminar!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        }
                    }
                    else
                    {
                        MessageBox.Show("Seleccione un Alumno!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }

                }
            }
            catch (exceptions.blexception)
            {
                MessageBox.Show("Error al Intentar Eliminar!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error al Intentar Eliminar!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                Gestión_UTN.util.EscribirLog.escribirArchivo(ex.Message);
            }
        }

        private void tsbtnModificar_Click(object sender, EventArgs e)
        {
            try
            {
                if (0 != dni)
                {
                    bo.Profesorbo profesor = new bo.Profesorbo();

                    profesor.Activo = true;

                    profesor.Apellido = this.dgvProfesores.CurrentRow.Cells[2].Value.ToString();

                    profesor.Ciudad = this.dgvProfesores.CurrentRow.Cells[5].Value.ToString();

                    profesor.Direccion = this.dgvProfesores.CurrentRow.Cells[4].Value.ToString();

                    profesor.Dni = Convert.ToInt32(this.dgvProfesores.CurrentRow.Cells[0].Value.ToString());

                    profesor.FechaNac = Convert.ToDateTime(this.dgvProfesores.CurrentRow.Cells[3].Value.ToString());

                    profesor.Nombre = this.dgvProfesores.CurrentRow.Cells[1].Value.ToString();

                    profesor.Tel_principal = Convert.ToInt32(this.dgvProfesores.CurrentRow.Cells[6].Value.ToString());

                    profesor.Tel_auxiliar = Convert.ToInt32(this.dgvProfesores.CurrentRow.Cells[7].Value.ToString());

                    profesor.Mail_principal = this.dgvProfesores.CurrentRow.Cells[8].Value.ToString();

                    profesor.Mail_auxiliar = this.dgvProfesores.CurrentRow.Cells[9].Value.ToString();

                    bool modificado = createProfesor.ModifyProfesor(dni, profesor);

                    if (modificado)
                    {
                        MessageBox.Show("Profesor Modificado!", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information);

                        refreshData();
                    }
                    else
                    {
                        MessageBox.Show("Error al Intentar Modificar!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }
                }
            }
            catch (exceptions.blexception)
            {
                MessageBox.Show("Error al Intentar Modificar!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error al Intentar Modificar!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                Gestión_UTN.util.EscribirLog.escribirArchivo(ex.Message);
            }
        }

        private void dgvProfesores_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (this.dgvProfesores.CurrentRow != null)
            {
                dni = Convert.ToInt32(this.dgvProfesores.CurrentRow.Cells[0].Value.ToString());
            }
        }

        private void tstxtFiltro_TextChanged(object sender, EventArgs e)
        {
            try
            {
                if (string.IsNullOrEmpty(tstxtFiltro.Text.Trim()))
                {
                    this.bsource.RemoveFilter();
                    return;
                }

                if (tscmbFiltro.Text.Equals("DNI"))
                {
                    this.bsource.Filter = "CONVERT(pro_dni,System.String) LIKE '%" + tstxtFiltro.Text + "%'";
                }
                else if (tscmbFiltro.Text.Equals("Nombre"))
                {
                    this.bsource.Filter = "pro_nombre LIKE '%" + tstxtFiltro.Text + "%'";
                }
                else if (tscmbFiltro.Text.Equals("Apellido"))
                {
                    this.bsource.Filter = "pro_apellido LIKE '%" + tstxtFiltro.Text + "%'";
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error al aplicar el filtro!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

                Gestión_UTN.util.EscribirLog.escribirArchivo(ex.Message);
            }
        }
    }
}
